package com.zm.xiaohashu.note.biz.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zm.response.Response;
import com.zm.xiaohashu.model.req.DeleteNoteReqVO;
import com.zm.xiaohashu.model.req.FindNoteDetailReqVO;
import com.zm.xiaohashu.model.req.PublishNoteReqVO;
import com.zm.xiaohashu.model.req.UpdateNoteReqVO;
import com.zm.xiaohashu.model.resp.FindNoteDetailRspVO;
import com.zm.xiaohashu.note.biz.domain.Note;
import com.zm.xiaohashu.note.biz.model.vo.LikeNoteReqVO;
import com.zm.xiaohashu.note.biz.model.vo.UnlikeNoteReqVO;

/**
* @author 24690
* @description 针对表【t_note(笔记表)】的数据库操作Service
* @createDate 2025-08-14 13:11:51
*/
public interface NoteService extends IService<Note> {

    /**
     * 笔记发布
     * @param publishNoteReqVO
     * @return
     */
    Response<?> publishNote(PublishNoteReqVO publishNoteReqVO);

    /**
     * 笔记详情
     * @param findNoteDetailReqVO
     * @return
     */
    Response<FindNoteDetailRspVO> findNoteDetail(FindNoteDetailReqVO findNoteDetailReqVO);


    /**
     * 笔记更新
     * @param updateNoteReqVO
     * @return
     */
    Response<?> updateNote(UpdateNoteReqVO updateNoteReqVO);

    /**
     * 删除本地缓存
     */
    void deleteNoteLocalCache(Long noteId);

    Response<?> deleteNote(DeleteNoteReqVO deleteNoteReqVO);

    /**
     * 点赞笔记
     * @param likeNoteReqVO
     * @return
     */
    Response<?> likeNote(LikeNoteReqVO likeNoteReqVO);

    /**
     * 取消点赞笔记
     * @param unlikeNoteReqVO
     * @return
     */
    Response<?> unlikeNote(UnlikeNoteReqVO unlikeNoteReqVO);
}
